package com.example.java.functional;

/**
 * @author houyangfan
 * @version 1.0
 * @date 2022/10/2 16:48
 *
 * 测试使用函数式接口调用
 */
public class TestFunctionalInvoke {

    /**
     * 定义一个方法，参数接收自定义的函数式接口
     * @param functionInterface
     */
    public static void test(MyFunctionInterface functionInterface) {
        functionInterface.method();
    }

    public static void main(String[] args) {
        // 使用函数式接口的实现类创建对象来传入参数
        test(new MyFunctionalImpl());

        //匿名内部类方式
        test(new MyFunctionInterface(){
            @Override
            public void method() {
                System.out.println("匿名内部类调用");
            }
        });

        // 使用lambda 表达式传参
        test(()-> System.out.println("lambda 方式调用"));
    }
}
